gusucode.com > MATLAB神经网络多个案例分析及详细源代码 > 源程序/案例4 神经网络遗传算法函数极值寻优-非线性函数极值/Select.m
function ret=select(individuals,sizepop) % 本函数对每一代种群中的染色体进行选择,以进行后面的交叉和变异 % individuals input : 种群信息 % sizepop input : 种群规模 % ret output : 经过选择后的种群 fitness1=1./individuals.fitness; sumfitness=sum(fitness1); sumf=fitness1./sumfitness; index=[]; for i=1:sizepop %转sizepop次轮盘 pick=rand; while pick==0 pick=rand; end for i=1:sizepop pick=pick-sumf(i); if pick<0 index=[index i]; break; %寻找落入的区间,此次转轮盘选中了染色体i,注意:在转sizepop次轮盘的过程中,有可能会重复选择某些染色体 end end end individuals.chrom=individuals.chrom(index,:); individuals.fitness=individuals.fitness(index); ret=individuals;